Multiple multipathing software modules on a computer system

ABSTRACT

One embodiment of the present invention is a method for enabling a computer system to run multiple multipathing software modules which includes: (a) scanning for physical devices; (b) scanning for paths to each of the physical devices; (c) presenting the paths to one or more multipathing software modules of a plurality of multipathing software modules operating within the computer system; (d) the multipathing software modules claiming or rejecting one or more of the one or more paths; and (e) creating and exposing one or more logical devices, wherein each logical device is associated with a multipathing software module.

This application claims the benefit of U.S. Provisional Application No.61/002,348 filed Nov. 7, 2007, which provisional application isincorporated herein by reference in its entirety.

BACKGROUND

Currently a server can be connected to different storage media.Furthermore, the server can include multiple physical paths from theserver to each of the different storage media. In this manner, if one ofthose physical paths should fail, data traffic can be routed to or froma storage media via one or more of the other physical paths. Typically,this routing is performed by multipathing software operating on theserver.

Usually, a specific version of multipathing software is installed on aserver which is developed and tailored to provide a variety offunctionality for its corresponding storage media. However, if theserver is connected to storage media that does not correspond to themultipathing software of the server, the multipathing software typicallyprovides limited functionality to that non-corresponding storage media.

SUMMARY

One embodiment of the present invention is a method for enabling acomputer system to run multiple multipathing software modules whichcomprises: (a) scanning for physical devices; (b) scanning for paths toeach of the physical devices; (c) presenting the paths to one or moremultipathing software modules of a plurality of multipathing softwaremodules operating within the computer system; (d) the multipathingsoftware modules claiming or rejecting one or more of the one or morepaths; and (e) creating and exposing one or more logical devices,wherein each logical device is associated with a multipathing softwaremodule.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram showing simultaneous use of multiplemultipathing software modules according to an embodiment of the presentinvention.

FIG. 2 is a flow diagram of an exemplary method in accordance withvarious embodiments of the invention.

DETAILED DESCRIPTION

Reference will now be made in detail to various embodiments inaccordance with the invention, examples of which are illustrated in theaccompanying drawings. While the invention will be described inconjunction with various embodiments, it will be understood that thesevarious embodiments are not intended to limit the invention. On thecontrary, the invention is intended to cover alternatives, modificationsand equivalents, which may be included within the scope of the inventionas construed according to the claims. Furthermore, in the followingdetailed description of various embodiments in accordance with theinvention, numerous specific details are set forth in order to provide athorough understanding of the invention. However, it will be evident toone of ordinary skill in the art that one or more embodiments of theinvention may be practiced without these specific details. In otherinstances, well known methods, procedures, components, and circuits havenot been described in detail as not to unnecessarily obscure aspects ofthe invention.

Unless specifically stated otherwise as apparent from the followingdiscussions, it is appreciated that throughout the present detaileddescription, discussions utilizing terms such as “presenting”,“claiming”, “rejecting”, “discovering”, “disabling”, “performing”,“translating”, “setting”, “programming”, “utilizing”, “incorporating”,“producing”, “retrieving”, “outputting”, or the like, can refer to theactions and processes of a computer system or electronic computingdevice, but is not limited to such. The computer system or electroniccomputing device can manipulate and transform data represented asphysical (electronic) quantities within the computer system's registersand/or memories into other data similarly represented as physicalquantities within the computer system memories and/or registers or othersuch information storage, transmission, or display devices. Someembodiments of the invention are also well suited to the use of othercomputer systems such as, for example, optical and virtual computers.

One or more embodiments of the present invention can include a mechanismand/or method for enabling a computer system, and more particularly, anoperating system, to run multiple multipathing software modulessimultaneously. As is well known, multipathing software enables morethan one physical path to be established between a hardware system (forexample, a computer, a server, etc.) and its mass storage devices (orstorage media) through buses, controllers, switches, and/or bridgedevices. The redundant paths can be used to provide fault tolerance,dynamic load balancing, and/or traffic shaping. In accordance with oneor more such embodiments, different multipathing software (ormultipathing software modules) from different vendors are enabled tooperate simultaneously within a single operating system, therebyleveraging the capabilities/functionalities available from differentmultipathing software (for example, and without limitation, a PowerPath™multipathing module from EMC Corporation (EMC) and a Smart ArrayMultipath multipathing module from Hewlett-Packard Company (HP) couldrun simultaneously).

FIG. 1 is a block diagram of exemplary architecture (or system) 1300that is fabricated in accordance with one or more embodiments of theinvention. In accordance with one or more such embodiments, system 1300is a virtualized computer system, and as such, system 1300 can includeone or more virtual machines (VMs) VM1 and VM 2 that can be operating ona hardware system (for example, a computer, a server, etc.).Virtualization technology is well known to those of ordinary skill inthe art, and advantages of virtual machine technology have become widelyrecognized. Among these advantages is an ability to run multiple virtualmachines on a single host platform. As is well known in the field ofcomputer science, a VM is an abstraction—a “virtualization”—of an actualphysical computer system. In one possible arrangement of a computersystem that implements virtualization, one or more VMs are installed ona “host platform,” or simply “host,” which will include system hardware,and one or more layers or co-resident components comprising system-levelsoftware, such as an operating system or similar kernel, or a virtualmachine monitor or hypervisor (see below), or some combination of these.The system hardware typically includes one or more processors, memory,some form of mass storage, and various other devices.

As shown in FIG. 1, system 1300 includes a virtual machine kernel(VMKernel), sometimes referred to as a hypervisor, that operates on thehardware system, which VMKernel is not part of any VM in system 1300. Asfurther shown in FIG. 1, the VMKernel includes a component referred toherein as a Pluggable Storage Architecture (PSA) which includes a seriesof APIs that are used to write a multipathing software module. Inaccordance with one or more such embodiments of the present invention,the PSA includes a Native Multipathing (NMP) multipathing softwaremodule and a PowerPath multipathing software module and, using the PSA,for example, the PowerPath multipathing software module and the NMPmultipathing software module are able to operate simultaneously whileoperating within a single operating system (e.g., VMKernel).

In accordance with one or more embodiments, the PSA implements a pathdiscovery process and a storage plugin path claiming process. Forexample, in accordance with one or more such embodiments, the pathdiscovery process includes the PSA scanning the storage devices. Inaccordance with one or more such embodiments, the path scanning processincludes a new path discovery process and a removal of missing pathsprocess, for example, create, keep, and destroy paths.

During path scanning, physical paths can end up in a group of unclaimedpaths. In accordance with one or more embodiments, a storage plugin pathclaiming process includes the PSA sending a “start of path claiming”notification to all plugins (or multipathing software modules).Additionally, the PSA presents the paths to the plugins (or multipathingsoftware modules) based on inquiry data and configuration file rules. Inaccordance with one or more such embodiments, a plugin (or multipathingsoftware module) can claim or reject the path. In addition, the storageplugin path claiming process also includes the PSA sending an “end ofpath claiming” notification to all plugins (or multipathing softwaremodules). Note that, since a plugin (or multipathing software module)has all the paths, it may create a logical device (for example andwithout limitation, a PSA entity that behaves like a SCSI device) andexpose it to the PSA.

A sample configuration file would be:

Model String “Disk Type A” Plugin “mpmgmt#1” Model String “Disk Type B”Plugin “mpmgmt#2” Model String “Disk Type C” Plugin “mpmgmt#1,mpmgmt#2”Model String “” Plugin “vmware-nmp”

Referring to FIG. 1, the PSA looks at all physical paths to a physicalstorage device (or media). A path refers to a single physical paththrough a storage network to a physical unit of storage—typically itrefers to a path in a Fibre Channel or iSCSI (i.e., SCSI over IP)storage network. Specifically, as shown in FIG. 1, one or more devicedrivers (device driver 1 and device driver 2) exist beneath theVMKernel. For example, and without limitation, the device drivers caneach be coupled to physical storage on an array via a fiber channel (FC)where the fiber channel can support multiple paths between each devicedriver and the physical storage.

In accordance with one such embodiment, multiple fiber channels cancouple each device driver to the physical storage.

In accordance with one or more embodiments of the present invention, theVMKernel and the PSA probe all the device drivers and gather acollection of paths. The PSA uses a configuration mechanism and presentseach of these physical paths to one or more of the multipathing software(e.g., PowerPath, NMP). In accordance with one or more such embodiments,a multipathing software module then has an option of claiming that pathand taking ownership thereof. As such, a collection of physical paths(e.g., P1 and P2 shown inside PowerPath of FIG. 1) will be managed bythe individual multipathing software module (e.g., PowerPath). Themultipathing software module can then use a VMKernel AP1 to call intothe PSA, and export a logical device (e.g., L1). In accordance with oneor more such embodiments, the logical device behaves in a manner similarto a physical device within any other operating system.

Note that, utilizing the technique of presenting physical paths to eachmultipathing software module operating on the VMKernel, the multiplemultipathing software modules can operate in parallel. For example, thePowerPath multipathing software module could claim path 1 (P1) and path2 (P2) while the NMP multipathing software module could claim path 3(P3) and path 4 (P4). As such, each multipathing software module canexport two different logical devices, for example, logical device 1 (L1)and logical device 2 (L2). The logical devices can be used in theoperating system (e.g., VMKernel) to run virtual machines (VMs) locatedabove those devices.

In accordance with one embodiment, multiple multipathing softwaremodules may not share the same path. In accordance with such anembodiment, there will not be an overlap or conflict with regard to thesame path. In such an embodiment, the PSA prevents (or stops) theoccurrence of a shared path. For example, if the PSA detects fourphysical paths to the same piece of storage media, all of them can beclaimed by one or another of the multipathing software modules. Notethat multiple physical paths to the same LUN may not be shared amongmultiple multipathing software modules. For example in FIG. 1, if therewere an IBM array located beneath the VMKernel that includes media onit, in one embodiment, paths to that IBM array are claimed by an IBMsupplied multipathing software module. Also, if there were an EMC arraylocated beneath the VMKernel that has some media on it, in the oneembodiment, the paths to that EMC array are claimed by PowerPath. Inaccordance with one embodiment, it can be desirable to have themultipathing software module provided by each hardware vendor manage thephysical paths to that hardware vendor's storage devices.

In accordance with one embodiment, path claiming can operate using aconfiguration file, which configuration file can include a series ofrules—the rules can be in XML format, but are not limited to such. Inaccordance with one such embodiment, there is a utility that reads thisinformation and loads it into the VMKernel. Then, an automated processin the VMKernel discovers the paths to the storage media. When itdiscovers a path, it issues an inquiry to the path. That inquiry returnsinformation that specifies, for example, the vendor of the device, modelof the device, and/or the version of the device. For example, the vendormight be EMC and the model might be Symm (for EMC Symmetrics). As such,the PSA can first present the path to the PowerPath multipathingsoftware module (for example, to a path claiming entry point thereof) todetermine if it desires to claim it. If the multipathing software modulewants the path, the multipathing software module can claim and takeownership of it. However, if the multipathing software module does notwant the path, the multipathing software module can reject it. Ifrejected, that path can be presented to the next multipathing softwaremodule until one of them actually claims it. In one embodiment, if theother multipathing software modules reject the path, the NMPmultipathing software module can claim it. In one embodiment, the NMPmultipathing software module can be implemented to always claim a pathwhen it is presented with the path, but is not limited to such.

Note that, by having multiple multipathing software modules operatingwithin a single operating system or the like (for example, VMKernel),the benefits of each multipathing software module can be realized by asingle hardware system (e.g., computer, server, etc.) that is coupled todifferent physical storage media.

Thus, as described, in one embodiment, once the PSA knows the paths, itcan present a path to each multipathing software module, in turn, andthe multipathing software module has the option of claiming and takingownership of it. In one such embodiment, the PSA gathers all physicalpaths to the same piece of storage media and then presents a physicallogical device above itself. When a virtual machine issues an I/O (e.g.,a read or write request) to its storage media, that I/O is convertedinto an I/O to a logical device, and the I/O is issued to that logicaldevice. Next, the I/O (read or write request) is forwarded to themultipathing software module that is actually managing that logicaldevice. Next, that multipathing software module selects which physicalpath it wants to issue the I/O to because, for example, not all of themmay be working, or there may be higher priority or faster performance onone path. The multipathing software module selects the path and thenissues the I/O, the PSA sends the I/O request out to the device driver,and finally out to the device. When the I/O is returned from the device,the PSA can then go back and post it as complete.

In one embodiment, the PSA prioritizes which multipathing softwaremodule is presented a path first and which multipathing software modulewill next be presented the path, and so on. For example, in one suchembodiment, the PSA can prioritize the presentation of a path to themultipathing software modules based on the received vendor, model,and/or version string of the physical device. Note that, when the PSAissues a SCSI inquiry command to each path, a block of information isreturned. In one embodiment, the three particular pieces of informationof that block that the PSA is interested in can be the vendor (e.g.,which is a text string), model (e.g., which is a text string), and/orversion string (e.g., which is a number). As such, in one embodiment,the PSA can present a path to be claimed to the multipathing softwaremodule that corresponds to the vendor, model and/or version of theassociated storage media or device. Specifically, if the vendor, modeland/or version are for EMC, the PSA can go to the EMC multipathingsoftware module first and ask if it wants to claim that path. Forexample, in one embodiment, if PowerPath 1 operates with version 1 andPowerPath 2 operates with version 2 and they are both operatingsimultaneously, based on the returned version associated with the path,the PSA can go to the corresponding version of PowerPath and ask if itwants to claim that path.

FIG. 2 is a flow diagram of method 500 for enabling multiplemultipathing software modules to operate within a single operatingsystem in accordance with various embodiments of the invention. Flowdiagram 500 includes processes that, in various embodiments, are carriedout by a processor(s) under the control of computer-readable andcomputer-executable instructions (or code), e.g., software. Thecomputer-readable and computer-executable instructions (or code) mayreside, for example, in data storage features such as computer usablevolatile memory, computer usable non-volatile memory, peripheralcomputer-readable media, and/or data storage unit. The computer-readableand computer-executable instructions (or code), which may reside oncomputer useable media, are used to control or operate in conjunctionwith, for example, processor and/or processors. However, the computingdevice readable and executable instructions (or code) may reside in anytype of computing device readable medium. Although specific operationsare disclosed in flow diagram 500, such operations are examples. Method500 may not include all of the operations illustrated by FIG. 2. Also,embodiments are well suited to performing various other operations orvariations of the operations recited in flow diagram 500. Likewise, thesequence of the operations of flow diagrams 500 can be modified. It isappreciated that not all of the operations in flow diagram 500 may beperformed. It is noted that the operations of method 500 can beperformed by software, by firmware, by electronic hardware, byelectrical hardware, or by any combination thereof.

At step 502 of FIG. 2, a scan is performed for physical devices. Notethat step 502 can be implemented in a wide variety of ways that are wellknown to those of ordinary skill in the art.

At step 504 of FIG. 2, paths are scanned to each of the physicaldevices. Note that step 504 can be implemented in a wide variety of waysthat are well known to those of ordinary skill in the art.

At step 506 of FIG. 2, the paths are presented to one or moremultipathing software modules and are claimed by one multipathing modulein a wide variety of ways that are well known to those of ordinary skillin the art.

At step 508, one or more logical devices are created and exposed,wherein each logical device can be associated with a multipathingsoftware module in a wide variety of ways that are well known to thoseof ordinary skill in the art. At the completion of step 508, method 500is exited.

The foregoing descriptions of various specific embodiments in accordancewith the invention have been presented for purposes of illustration anddescription. They are not intended to be exhaustive or to limit theinvention to the precise forms disclosed, and obviously manymodifications and variations are possible in light of the aboveteaching. The invention can be construed according to the claims andtheir equivalents.

1. A method for enabling a computer system to run multiple multipathingsoftware modules comprising: discovering paths to storage devices, thepaths being physical paths to specific ones of the storage devices;presenting one or more of the paths to multipathing software modules ofa plurality of multipathing software modules operating within thecomputer system, wherein presenting one or more of the paths is inaccordance with inquiry data and configuration rules, the configurationrules indicate multipathing software modules to which a path to aparticular type of storage device is to be presented; the multipathingsoftware modules claiming or rejecting one or more of the one or morepaths, such that the claiming or rejecting by a multipathing softwaremodule claims or rejects all physical paths to a storage device; and themultipathing software modules presenting logical devices associated withthe multipathing software modules for use by the computer system.
 2. Themethod of claim 1, wherein presenting logical devices further comprisescausing a computer system application program interface to export thelogical devices.
 3. The method of claim 1 wherein presenting the one ormore of the paths includes preventing multiple multipathing softwaremodules from sharing the same path.
 4. The method of claim 1 whereinpresenting one or more of the paths includes preventing multiplephysical paths to the same logical from being shared among multiplemultipathing software modules.
 5. The method of claim 1 whereinmultipathing software modules provided by a hardware vendor for astorage device manage physical paths to that hardware vendor's storagedevices.
 6. The method of claim 1 wherein presenting one or more of thepaths comprises presenting each of the physical paths to one or more ofthe multipathing software modules.
 7. The method of claim 6 whereinclaiming or rejecting comprises the multipathing software modules havingan option of claiming a path.
 8. The method of claim 1 whereinpresenting one or more of the paths comprises a path to eachmultipathing software module, in turn, and the multipathing softwaremodule having an option of claiming and taking ownership of the path. 9.The method of claim 1 wherein presenting one or more of the pathsincludes prioritizing which multipathing software module is presented apath first and which multipathing software module will next be presentedthe path.
 10. The method of claim 9 wherein prioritizing comprisespresenting a path to the multipathing software modules based on vendor,model, and/or version ostring of the physical device.
 11. A method forenabling a computer system to run multiple multipathing software modulescomprising: discovering paths to storage devices, the paths beingphysical paths to specific ones of the storage devices, wherein upondiscovering a path, issuing an inquiry to the path, the inquiryreturning information comprising vendor of the device, model of thedevice, and/or version of the device; presenting one or more of thepaths to multipathing software modules of a plurality of multipathingsoftware modules operating within the computer system, whereinpresenting one or more of the paths is in accordance with inquiry dataand configuration rules; the multipathing software modules claiming orrejecting one or more of the one or more paths, such that the claimingor rejecting by a multipathing software module claims or rejects allphysical paths to a storage device; and the multipathing softwaremodules presenting logical devices associated with the multipathingsoftware modules for use by the computer system.
 12. The method of claim11, wherein presenting one or more of the paths comprises using theinformation to present a path to a particular multipathing softwaremodule, which particular multipathing software module is indicated inthe configuration.
 13. A method for enabling a computer system to runmultiple multipathing software modules comprising: discovering paths tostorage devices, the paths being physical paths to specific ones of thestorage devices; presenting one or more of the paths to multipathingsoftware modules of a plurality of multipathing software modulesoperating within the computer system, wherein presenting one or more ofthe paths further includes, presenting a path to one multipathingsoftware module; the multipathing software module rejecting the path;presenting the path to another multipathing software module; themultipathing software modules claiming or rejecting one or more of theone or more paths, such that the claiming or rejecting by a multipathingsoftware module claims or rejects all physical paths to a storagedevice; and the multipathing software modules presenting logical devicesassociated with the multipathing software modules for use by thecomputer system.
 14. The method of claim 13 wherein at least onemultipathing software module always claims a path.